package com.qf.collection.stack;

import java.util.Stack;

/**
 * 给定一个包含小括号的字符串，例如"1+((a+b)/c)+5/(2+a)",请写一个方法判断该字符串中的小括号是否成对出现。
 */
public class StackDemo {
    public static void main(String[] args) {
        String s = "1+((a+b)/c)+5/(2+a))";
        boolean b = testXkh1(s);
        System.out.println(b);
    }

    public static boolean testXkh1(String s) {
        try {
            // 创建一个栈对象，用来保存 (
            Stack<String> stack = new Stack<>();

            char[] charArray = s.toCharArray();
            for (char c : charArray) {
                if (c=='('){
                    stack.push("(");
                }else if(c==')'){
                    stack.pop();
                }else {
                    continue;
                }
            }

            return stack.isEmpty();
        } catch (Exception e) {
            return false;
        }
    }


    public static boolean testXkh(String s) {
        try {
            // 创建一个栈对象，用来保存 (
            Stack<String> stack = new Stack<>();

            String[] split = s.split("");
            for (String s1 : split) {
                if (s1.equals("(")){
                    stack.push(s1);
                }else if(s1.equals(")")){
                    stack.pop();
                }else {
                    continue;
                }
            }

            return stack.isEmpty();
        } catch (Exception e) {
            return false;
        }
    }
}
